package com.job.DQH.dqh714.inClass;

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;

public class UseBig {
    public static void main(String[] args) {
        BigDecimal b1 = new BigDecimal(6.49846468484684488291919191919);
        BigDecimal b2 = new BigDecimal(9.8272402875340752789294723984723023874723742389047189034714189);
        //即使是double也无法存储这样精度的小数，故使用类BigDecimal
        //该类型的数据运算时需调用方法
        //该类型的数据输出时也不会丢失精度
        System.out.println(b1.divide(b2, 40,RoundingMode.HALF_UP));//计算b1/b2，结果保留40位，4舍5入
        System.out.println(b1.divide(b2,new MathContext(40,RoundingMode.HALF_UP)));;//MathContext是一个类，专门保存精度与舍入问题

        BigDecimal pi = new BigDecimal(Math.PI);
        System.out.println(pi);
        System.out.println(pi.divide(new BigDecimal(1),100,RoundingMode.HALF_UP));

        System.out.println(b2.multiply(pi));

        //下面是Bigdecimal的setscale方法，以某种舍入方式设置对象的精度,返回值是Bigdecimal类型的对象
        System.out.println(pi.setScale(100, RoundingMode.HALF_UP));

    }
}
